<?php
include_once('controller/C_Controller.php');
include_once('model/M_Users.php');
/** 
 *  @author VGireev 
 *	@REVISION:  $Id: C_Base.php 11 2011-12-18 12:52:37Z host.xserver@gmail.com $
 *  @brief Файл класса C_Base
 *  © myCompany 2011
 *
 *  Базовый контроллер сайта
 *  
 */

abstract class C_Base extends C_Controller
{
	protected $title;		//!< Заголовок страницы
	protected $content;		//!< Содержание страницы
	protected $menu;		//!< Меню страницы
	protected $user_block;	//!< Инфо-блок авторизованного пользователя на странице
	protected $title_page;
	protected $needLogin;	//!< Необходимость авторизации
	protected $user;		//!< Авторизованный пользователь 
	private   $start_time;	//!< Время начала генерации страницы


	function __construct()
	{
		$this->needLogin = false; //!< Доступ закрыт 
		$this->user		 = null;		
	}
	
	// Виртуальный обработчик запроса 
	protected function OnInput()
	{
		// Очистка устаревших сессий и определение текущего пользователя
		$mUsers			= M_Users::Instance();		
		$mUsers->ClearSessions();		
		$this->user		= $mUsers->Get();
		
		// Перенаправление на страницу авторизации, если это необходимо
		if ($this->user == null && $this->needLogin) {       	
			header("Location: index.php?c=login");
			die();
		}
		else {
        	if ($this->user['name'] == null)
        		$this->user['name'] = $this->user['login'];
        }	
		
		// Засекаем время начала обработки запроса
		$this->start_time = microtime(true);
	}

	// Виртуальный генератор HTML
	protected function OnOutput()
	{
		// Шаблон инфо-блока пользователя
    	$var_user_block		= array('logined'  		=> ($this->user != null),
    							'user_name'			=> $this->user['name']);
    	
    	$this->user_block	= $this->View('/view/tpl_block.php', $var_user_block);
	    
	    // Основной шаблон всех страниц
		$vars				= array('title_page'	=> $this->title_page,
								    'title'			=> $this->title,
								    'user_block'	=> $this->user_block,
								    'menu'			=> $this->menu,
								    'content'		=> $this->content, 
								   );
			
		$page				= $this->View('/view/tpl_base.php', $vars);
						
		// Время обработки запроса
        $time				= microtime(true) - $this->start_time;        
        $page			   .= "<!-- время генерации страницы: $time сек-->";
        
		// Вывод HTML
        echo $page;
	}
/* ===================================================================== */
	static function GetMenuItems($logned)
	{
		return $logned ? true : false;
	}
	
}
